package com.example.demo.config.db.interceptor;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 数据安全注解类。<br/>
 * 使用 @DataSecurity 注解标记的字段，表示这个字段需要进行加密和解密。
 */
// @Target 设置注解的使用范围，这里设置可以用在方法和字段上。
@Target({ElementType.METHOD, ElementType.FIELD})
// @Target 设置注解的使用范围，这里设置可以用在参数、方法和字段上。
// @Target({ElementType.PARAMETER, ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME) // 表示该注解保留到运行时。在运行时保留注解信息，可以通过反射获取注解信息。
public @interface DataSecurity {
    /**
     * 加密算法。
     *
     * @return
     */
//    DataSecurityAlgorithmEnum algorithm() default DataSecurityAlgorithmEnum.SM4;
 
    /**
     * 待加解密的属性名称（当注解在方法上时有效）。<br/>
     * 示例：@DataSecurity(value = "name") 或 @DataSecurity(value = {"name1", "name2"})
     *
     * @return
     */
    String[] value() default "";
}